package com.clarence.dada.modular.system.app.service;

import com.clarence.dada.core.base.PageResult;
import com.baomidou.mybatisplus.extension.service.IService;
import com.clarence.dada.modular.system.app.entity.SysAppEntity;
import com.clarence.dada.modular.system.app.entity.dto.SysAppDto;
import com.clarence.dada.modular.system.app.entity.req.SysAppReq;
import com.clarence.dada.modular.system.app.entity.resp.SysAppResp;

import java.util.List;

/**
 * 系统应用service接口
 *
 * @author GD
 * @since 2020/3/13 16:14
 */
public interface SysAppService extends IService<SysAppEntity> {

    /**
     * 添加系统应用
     *
     * @param sysAppReq 添加参数
     * @author GD
     * @since 2020/3/25 14:57
     */
    void appAdd(SysAppReq sysAppReq);

    /**
     * 删除系统应用
     *
     * @param sysAppReq 删除参数
     * @author GD
     * @since 2020/3/25 14:57
     */
    void appDelete(SysAppReq sysAppReq);

    /**
     * 编辑系统应用
     *
     * @param sysAppReq 编辑参数
     * @author GD
     * @since 2020/3/25 14:58
     */
    void appEdit(SysAppReq sysAppReq);

    /**
     * 更新状态
     *
     * @param sysAppReq 请求参数
     * @author GD
     * @since 2021/1/6 14:30
     */
    void appUpdateStatus(SysAppReq sysAppReq);

    /**
     * 查看系统应用
     *
     * @param sysAppReq 查看参数
     * @return 系统应用响应实例
     * @author GD
     * @since 2020/3/26 9:50
     */
    SysAppResp appDetail(SysAppReq sysAppReq);

    /**
     * 系统应用列表
     *
     * @param sysAppReq 查询参数
     * @return 系统应用列表
     * @author GD
     * @since 2020/4/19 14:56
     */
    List<SysAppResp> appDropDown(SysAppReq sysAppReq);

    /**
     * 查询系统应用
     *
     * @param sysAppReq 查询参数
     * @return 查询分页结果
     * @author GD
     * @since 2020/3/24 20:55
     */
    PageResult<SysAppResp> appPage(SysAppReq sysAppReq);

    /**
     * 将应用设为默认应用，用户进入系统会默认进这个应用的菜单
     *
     * @param sysAppReq 设为默认应用参数
     * @author GD
     * @since 2020/6/29 16:49
     */
    void appSetTop(SysAppReq sysAppReq);

    /**
     * 获取用户的顶部app导航列表
     *
     * @author GD
     * @since 2021/4/21 15:34
     */
    List<SysAppResp> getUserTopAppList();

    /**
     * 通过app编码获取app的中文名
     *
     * @param appCode 应用的编码
     * @return 应用的中文名
     * @author GD
     * @since 2020/11/29 20:06
     */
    String getAppNameByAppCode(String appCode);

    /**
     * 获取应用信息详情
     *
     * @author GD
     * @since  2021/8/24 20:12
     */
    SysAppDto getAppInfoByAppCode(String appCode);

    /**
     * 按顺序获取app的编码和名称
     *
     * @author GD
     * @since  2022/4/6 22:34
     */
    List<SysAppDto> getSortedApps();
}
